package cn.edu.ctbu.bootstrap521.service;

import cn.edu.ctbu.bootstrap521.domain.Student;
import cn.edu.ctbu.bootstrap521.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.Collections;
import java.util.List;

/**
 * 告诉StudentService这是一个服务类
 */
@Service
public class StudentService {

    @Autowired
    private StudentRepository studentRepository;
    public Page<Student> getAll(Pageable pageable){
        return studentRepository.findAll(pageable);
    }
    /**
     * 按id进行查询
     * @param id 主键，整数
     * @return
     */
    public Student findById(Integer id){
        return studentRepository.findById(id).orElse(null);
    }
    /**
     * 按no进行查询
     * @param no 学号,整数
     * @return
     */
    public Student findByNo(String no){
        return studentRepository.findByNo(no);
    }

    /**
     * 按cno查询选课
     * @param cno 课程号
     * @return
     */
    public List<Student> findByCourse(Integer cno){
        return studentRepository.findByCno(cno);
    }
    /**
     * 按名字进行查询，Like
     * @param name 字符串
     * @return
     */
    public List<Student> searchByName(String name) {
        System.out.println("查询姓名：" + name); // 打印查询条件
        List<Student> students = studentRepository.findByNameLike(name);
        if (students != null && !students.isEmpty()) {
            System.out.println("查询结果：" + students); // 打印查询结果的所有学生信息
            return students; // 返回所有匹配的学生信息
        } else {
            System.out.println("未找到匹配的学生信息"); // 打印未找到匹配的学生信息
            return Collections.emptyList(); // 没有匹配的学生信息时返回空列表
        }
    }
    /**
     * 新增学生
     * @param student 对象
     * @return
     */
    public Student insert(Student student){
        studentRepository.save(student);
        return student;
    }
    /**
     * 更新学生
     * @param student 对象
     * @return
     */
    public Student update(Student student){
        studentRepository.save(student);
        return student;
    }
    /**
     * 按id删除学生
     * @param id 整数
     */
    public void deleteById(Integer id){
        studentRepository.deleteById(id);
    }

    /**
     * 检查学号是否已存在
     * @param no
     * @return
     */
    public boolean existsByNo(String no) {
        return studentRepository.existsByNo(no);
    }
}
